import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import iView from 'view-design'
import i18n from '@/locale'
import config from '@/config'
import'./index.less'
import { initRouter } from '@/libs/router-util' // ①新增  引入动态菜单渲染
import importDirective from '@/directive'
import { getColumns } from '@/libs/table-util'
import axios from '@/libs/api.request'
import { getPlaceholder } from '@/libs/util'
import UUID from 'vue-uuid'

Vue.use(UUID)

if(config.env !== 'prod') require('@/mock')

Vue.config.productionTip = false

Vue.use(iView, {
  i18n: (key, value) => i18n.t(key, value)
})

/*
* 1.filterColumns计算属性获取隐藏信息进行返回
* 2.创建缓存列表data
* 3.filterColumns根据data进行值的返回
* 4.表格使用filterColumns计算属性显示
* 5.列显示控件列名国际化
* */
// Vue.mixin({
//   data () {
//     return {
//       hsColumns: [],
//       searchHt: 0,
//       current: 1,
//       pageSize: 10
//     }
//   },
//   methods: {
//     setColumn(data) {
//       this.hsColumns = data
//     },
//     pageChange(val) {
//       this.current = val
//     },
//     pageSizeChange(val) {
//       this.pageSize = val
//     }
//   },
//   created: function () {
//
//   },
//   computed:{
//     tableHeight() {
//       return store.state.app.contentHeight - this.searchHt - 82
//     },
//     filterColumns() {
//       // 获取页面列表
//       let pageColumns = this.columns1
//       // 获取缓存列表
//       let cacheColumns = this.hsColumns
//       const filterColumns = [];
//       pageColumns.forEach(item => {
//         let col = cacheColumns.filter(cs => cs.key === item.key && !cs.hidden)
//         if (col.length > 0 || cacheColumns.length===0) {
//           filterColumns.push(item);
//         }
//       });
//       return filterColumns
//     }
//   },
//   mounted() {
//     let searchDiv = document.getElementsByClassName('search-con')[0];
//     if (searchDiv !== undefined) {
//       this.searchHt = searchDiv.offsetHeight;
//     }
//   }
// })


/**
 * @description 生产环境关闭提示
 * */
Vue.config.productionTip = false

/**
 * @description 全局注册应用配置
 * */
Vue.prototype.$config = config

Vue.prototype.$http = axios

Vue.prototype.$localColumns = getColumns

Vue.prototype.$placeholder =getPlaceholder

importDirective(Vue)

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  i18n,
  store,
  render: h => h(App),
  mounted(){
    initRouter(this);  // ①新增 调用方法,动态生成路由
  }
})


